home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / mg.h < prev    next >
C/C++ Source or Header  |  1998-06-20  |  1KB  |  46 lines

  1. /*    mg.h
  2.  *
  3.  *    Copyright (c) 1991-1997, Larry Wall
  4.  *
  5.  *    You may distribute under the terms of either the GNU General Public
  6.  *    License or the Artistic License, as specified in the README file.
  7.  *
  8.  */
  9.  
  10. #ifdef STRUCT_MGVTBL_DEFINITION
  11. STRUCT_MGVTBL_DEFINITION;
  12. #else
  13. struct mgvtbl {
  14.     int        (CPERLscope(*svt_get))    _((SV *sv, MAGIC* mg));
  15.     int        (CPERLscope(*svt_set))    _((SV *sv, MAGIC* mg));
  16.     U32        (CPERLscope(*svt_len))    _((SV *sv, MAGIC* mg));
  17.     int        (CPERLscope(*svt_clear))    _((SV *sv, MAGIC* mg));
  18.     int        (CPERLscope(*svt_free))    _((SV *sv, MAGIC* mg));
  19. };
  20. #endif
  21.  
  22. struct magic {
  23.     MAGIC*    mg_moremagic;
  24.     MGVTBL*    mg_virtual;    /* pointer to magic functions */
  25.     U16        mg_private;
  26.     char    mg_type;
  27.     U8        mg_flags;
  28.     SV*        mg_obj;
  29.     char*    mg_ptr;
  30.     I32        mg_len;
  31. };
  32.  
  33. #define MGf_TAINTEDDIR 1
  34. #define MGf_REFCOUNTED 2
  35. #define MGf_GSKIP      4
  36.  
  37. #define MGf_MINMATCH   1
  38.  
  39. #define MgTAINTEDDIR(mg)    (mg->mg_flags & MGf_TAINTEDDIR)
  40. #define MgTAINTEDDIR_on(mg)    (mg->mg_flags |= MGf_TAINTEDDIR)
  41. #define MgTAINTEDDIR_off(mg)    (mg->mg_flags &= ~MGf_TAINTEDDIR)
  42.  
  43. #define MgPV(mg,lp)        (((lp = (mg)->mg_len) == HEf_SVKEY) ?   \
  44.                  SvPV((SV*)((mg)->mg_ptr),lp) :        \
  45.                  (mg)->mg_ptr)
  46.